{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = np.arange(10)\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1ab8de64310>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'whiskers': [<matplotlib.lines.Line2D at 0x1ab9193a940>,\n",
       "  <matplotlib.lines.Line2D at 0x1ab9193aca0>],\n",
       " 'caps': [<matplotlib.lines.Line2D at 0x1ab91947040>,\n",
       "  <matplotlib.lines.Line2D at 0x1ab919473a0>],\n",
       " 'boxes': [<matplotlib.lines.Line2D at 0x1ab9193a5e0>],\n",
       " 'medians': [<matplotlib.lines.Line2D at 0x1ab91947700>],\n",
       " 'fliers': [<matplotlib.lines.Line2D at 0x1ab91947a00>],\n",
       " 'means': []}"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "ax1 = fig.add_subplot(2,2,1)\n",
    "ax2 = fig.add_subplot(2,2,2)\n",
    "ax3 = fig.add_subplot(2,2,3)\n",
    "ax4 = fig.add_subplot(2,2,4)\n",
    "ax1.hist(np.random.randn(100), bins = 20, color = 'k', alpha = 0.3)\n",
    "ax2.scatter(np.arange(30),np.arange(30) + 3 * np.random.randn(30))\n",
    "ax3.plot(np.random.randn(50).cumsum(),'k--')\n",
    "ax4.boxplot(np.random.randn(100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(2,2, sharex = True ,sharey = True)\n",
    "for i in range(2):\n",
    "    for j in range(2):\n",
    "        axes[i,j].hist(np.random.randn(500), bins = 50, color = 'k', alpha = 0.3)\n",
    "plt.subplots_adjust(wspace = 0, hspace = 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Seaborn绘图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1ab93757670>]"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s = pd.Series(np.random.randn(10).cumsum(), index = np.arange(0,100,10))\n",
    "fig = plt.figure();\n",
    "ax = fig.add_subplot(1,1,1)\n",
    "plt.plot(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1ab94008ca0>"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randn(10,4).cumsum(0),columns = ['A','B','C','D'],index = np.arange(0,100,10))\n",
    "df.plot(legend = True, subplots = False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 随机采样与排列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "suits = ['H', 'S', 'C', \"D\"]\n",
    "card_val = (list(range(1,11))+[10]*3)*4\n",
    "base_names = ['A'] + list(range(2,11))+[\"J\",\"k\",\"Q\"]\n",
    "cards = []\n",
    "for suit in suits:\n",
    "    cards.extend(suit+'_'+str(num) for num in base_names)\n",
    "deck = pd.Series(card_val, index = cards)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "S_3      3\n",
       "H_7      7\n",
       "D_10    10\n",
       "D_9      9\n",
       "H_8      8\n",
       "dtype: int64"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def draw(deck, n = 5):\n",
    "    return deck.sample(n)\n",
    "draw(deck)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "C  C_J     10\n",
       "   C_8      8\n",
       "D  D_2      2\n",
       "   D_8      8\n",
       "H  H_7      7\n",
       "   H_10    10\n",
       "S  S_7      7\n",
       "   S_9      9\n",
       "dtype: int64"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_suit = lambda x:x[0]\n",
    "deck.groupby(get_suit).apply(draw, n =2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 分组加权平均和相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>category</th>\n",
       "      <th>data</th>\n",
       "      <th>weights</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>a</td>\n",
       "      <td>-0.000888</td>\n",
       "      <td>-0.015774</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>a</td>\n",
       "      <td>-1.134920</td>\n",
       "      <td>1.363128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>a</td>\n",
       "      <td>-0.043384</td>\n",
       "      <td>-0.167532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>a</td>\n",
       "      <td>-0.750070</td>\n",
       "      <td>-1.314893</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>b</td>\n",
       "      <td>1.535084</td>\n",
       "      <td>0.332008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>b</td>\n",
       "      <td>2.070636</td>\n",
       "      <td>0.048891</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>b</td>\n",
       "      <td>0.531833</td>\n",
       "      <td>0.484987</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>b</td>\n",
       "      <td>-0.393067</td>\n",
       "      <td>0.435825</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  category      data   weights\n",
       "0        a -0.000888 -0.015774\n",
       "1        a -1.134920  1.363128\n",
       "2        a -0.043384 -0.167532\n",
       "3        a -0.750070 -1.314893\n",
       "4        b  1.535084  0.332008\n",
       "5        b  2.070636  0.048891\n",
       "6        b  0.531833  0.484987\n",
       "7        b -0.393067  0.435825"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame({'category':['a','a','a','a','b','b','b','b'],\n",
    "                  'data': np.random.randn(8),\n",
    "                  'weights':np.random.randn(8)})\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "category\n",
       "a    4.097835\n",
       "b    0.535847\n",
       "dtype: float64"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_wavg = lambda g: np.average(g['data'], weights = g['weights'])\n",
    "df.groupby(\"category\").apply(get_wavg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
